查看原文
其他

【源头活水】ACL2021: 对比学习还能这样用?提升多语言机器翻译性能

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—潘小小
地址:https://zhuanlan.zhihu.com/p/379328100

目前主流的多语言翻译模型主要在英语相关的语对上进行训练。这样的系统通常在英语相关的语向上表现不错,而在非英语方向的翻译效果不佳,不能做到真正的many-to-many翻译,也就并不是任意两种语言的互译都能很好地支持。针对这个问题,字节跳动的研究者们近期提出了mRASP2,通过引入对比学习,辅以对齐增强方法,将单语语料和双语语料囊括在统一的训练框架之下,旨在充分利用语料,学习更好的语言无关表示,并由此提升多语言翻译性能,基本上做到了一个模型翻译任意语向。实验结果表明mRASP2在有监督、无监督、零资源的场景下均取得翻译效果的提升。其中有监督场景平均提升 1.98 BLEU,无监督场景平均提升 14.13 BLEU,零资源场景平均提升 10.26 BLEU。

本文已经被ACL2021主会接收
接下来我们从三个方面介绍分析 mRASP2:
1)mRASP2 的背景和动机;
2)mRASP2的方法;
3)mRASP2 的实际效果和分析。

视频讲解

代码在这里: 

https://github.com/PANXiao1994/mRASP2

论文在这里:

https://arxiv.org/abs/2105.09501

联系方式戳 :

https://fork-ball-95c.notion.site/mRASP2-info-page-4e9b3450d5aa4137ae1a2c46d5f3c1fa


01

研究背景和动机
随着全球化的进程不断加快,人们在进行外交、外贸、旅游等活动时都离不开跨语言交际。然而传统的人工翻译由于其价格昂贵、实时性差等缺陷,只适用于少部分场景。机器翻译的出现打破了这些限制,大大扩充了翻译的应用场景。现代机器翻译模型通过神经网络模型把输入的句子转化为另一种语言的句子。目前主流的神经机器翻译是基于“编码器-解码器”结构,如下图所示,编码器将源语言的句子编码成为连续空间中的某个向量,而解码器从这个向量出发去生成目标语言的句子。“编码器-解码器”的翻译过程和人类翻译过程很类似:对于人类来说,将一句话从一个语言翻译成另一个语言,也是先将原句的意思看懂,在脑子里形成一个句意的概念,再从句意出发,输出成另一种语言的文字。这样带来的效果是,意思相近的句子经过编码器后,其向量表示会分布在连续空间的相邻位置。比如下图中的"Mary is loved by John"和"John loves Mary"这两句话是相同的意思,因此它们在编码器输出后的高维空间中,向量的分布比较接近;而"Mary loves John"的意思相反,因此其向量的分布就和之前两句话相距较远。
传统的机器翻译只能支持单个语向,而多语言机器翻译的模型有能力同时支持多个翻译语向。多语言机器翻译由于其低部署成本、有迁移学习效果等优点,在近几年引起研究者和工程师们的广泛关注。作为mRASP2的前置工作,mRASP主要提出了“机器翻译预训练”的思路来达到高效利用不同语对的语料的目的。mRASP提出了基于平行词典的对齐替换(RAS),额外引入了词级别的对齐信息。实验证明,RAS的确拉近了同义词的高维表示,也间接拉近了同义句的高维表示。mRASP2在此基础上引入对比学习拉近同义句表示,显式地拉近同义句表示的距离。
在实际情况中,单语语料的数量远远大于平行语料的数量。对于传统的单向机器翻译模型而言,可以通过回译技术(back-translation)利用单语语料来增强翻译效果。而对于多语言翻译来说,虽然回译技术(back-translation)的方法依然有效,但是流程长且繁琐。mRASP2将单语双语放在统一框架下训练,充分且简单地利用广泛存在的各种语料。


02

模型结构和细节
mRASP2在多语言翻译的multilingual Transformer模型之上,在编码器(Encoder)端的顶部加入了对比学习任务。这样的设计是基于一个经典的假设:不同语言中同义句的编码后的表示应当在高维空间的相邻位置。因为不同语言中的同义句对应的句意是相同的,也就是上文提到的“编码”过程的输出是相同的。比如“早上好”和“Good morning”这两句话对于懂中文和英文的人来说,理解的意思是一样的,这也就对应了“编码后的表示在高维空间的相邻位置”。

03

训练目标设计
mRASP2在传统的交叉熵损失(cross entropy loss)的基础上,加入了对比损失(contrastive loss),以多任务形式进行训练。图中橙色的箭头指示的是传统使用交叉熵损失(Cross Entropy Loss, CE loss)训练机器翻译的部分;黑色的部分指示的是对比损失(Contrastive Loss, CTR loss)对应的部分。
  • 交叉熵损失函数(CE loss)
mRASP2在传统的cross entropy(CE) loss的基础上,加入了contrastive(CTR) loss,并且以multi-task的形式进行训练。图中橙色的箭头指示的是传统使用CE loss训练机器翻译的部分;黑色的部分指示的是CTR loss对应的部分。
  • 交叉熵损失函数(CE loss)
具体的损失函数如下

交叉熵损失函数的目的就是使目标端输出的分布与真实分布尽可能一致。也就是说,对应目标输出的每个位置的真实分布(id_0: 0.0, id_1: 0.0, ......, id_true: 1.0, ......, id_N: 0.0),模型输出的token概率分布要尽可能接近该真实分布。注意每个位置的交叉熵损失是独立的,因此CE loss是词级别(token-level)的。
  • 对比损失函数(CTR loss)
对比学习最早被应用在图像领域,通过缩小与正样本间的相似度/距离,扩大与负样本间的相似度/距离,使得正样本与锚点之间的距离远远大于负样本与锚点之间的距离。
在mRASP2的训练过程中,对训练数据里的每一个sample,它的“锚点”是该sample的源端句子的向量表示,即公式中的    ,“正例”是该sample的目标端句子的向量表示,即公式中的    ,“负例”是同一个batch下其他sample的目标端句子的向量表示的集合,即公式中的    。具体的损失函数如下,其中sim(.,.)是相似度函数,作者使用的是比较经典的余弦相似度。
1. 每个句子的向量表示   是encoder最后一层输出的hidden states的平均向量。
2. 文中的  是“温度”,它是一个重要的超参数,控制着模型区分正负例的难度,温度越低,难度越小。在本文的实验中,温度被设置为0.1
  • 多任务训练
在mRASP2的训练过程中,作者将两部分loss结合起来进行多任务训练,最终的损失函数如下:

1.   指的是序列的平均长度,因为CE loss是token-level的,而CTR loss是sequence-level的
2.  是用于平衡两个loss的因子


04

词对齐数据增强方法
词对齐数据增强方法 ,又称对齐增强(Aligned Augmentation, AA),是从mRASP的随机对齐变换(Random Aligned Substitution, RAS)方法发展而来的。

图(a)表示了对平行语料的增强过程,图(b)表示了对单语语料的增强过程。

如图所示,图(a)中原本的英语单词被替换成中文对应的单词;而图(b)中原本的中文单词被分别替换成英文、法语、阿拉伯语、德语。mRASP的RAS等价于第一种替换方式,它只要求提供双语的同义词词典;而第二种替换方式需要提供包含多种语言的同义词词典。值得提一句,读者最终使用对齐增强方法的时候,可以只采用(a)的做法或者只采用(b)的做法。


05

实际效果和分析
mRASP2的多语言翻译效果逼近或者超过单向模型当前最高水平;另外它还直接支持无监督翻译和零资源翻译。作者将翻译的场景分为有监督方向、无监督方向、零资源方向。训练数据包括PC32: 包含32个英语相关语对的平行语料)和MC24(newscrawl单语语料,由21个在PC32中的语言,另外加上3个语言荷兰语(Nl), 波兰语(Pl), 葡萄牙语(Pt)组成。

有监督翻译方向

1. 在有监督(英语相关)方向上,大多数方向都超过了其他工作,其中包括单向模型和预训练+微调的模型
2. 仅仅依靠多语言性能,mRASP2就能实现多个方向的无监督翻译
3. mRASP2在零资源场景下表现卓越,甚至能够比肩很强的桥接模型
上表展示了mRASP2在有监督方向上的翻译效果。表中展示的是tokenized BLEU。
对比多语言翻译系统的基线模型m-Transformer, mRASP2在表中的10个方向上都有显著的提升。相比一些预训练+微调的工作,mRASP2也在大部分方向上超过了它们的效果。其中,适应模块方法(Adapter)介于统一多语言模型和单向模型之间。对于英语->罗马尼亚语(En->Ro)方向,我们采取了和以往工作一样的操作:将罗马尼亚语的特殊符号去掉。
在有监督(英语相关)方向上,mRASP2在大多数方向上都超过了其他工作,其中包括单向模型和预训练+微调的模型。

无监督翻译方向

“无监督方向”指的是:至少一端在训练阶段只见过单语语料。在本实验中,荷兰语、葡萄牙语、波兰语(Nl, Pt, Pl)这三个语言都没有出现在平行句对中,我们仅仅是提供了这三个语种的单语语料。由此可见,英语<->荷兰语/葡萄牙语/波兰语这几个语向中,源端或者目标端是没在训练阶段出现过的,也就是说,这几个语种没有在训练阶段显式地和其他语言建立联系。我们也研究了两端都只见过单语语料的情况:荷兰语<->葡萄牙语(Nl<->Pt)方向。对于英语->X方向和荷兰语<->葡萄牙语方向,m-Transformer和mRASP显然无法进行翻译,而mRASP2取得了不错的效果。

mRASP2在无监督方向上远远超过基线模型m-Transformer。表中展示的是tokenized BLEU。对于荷兰语&amp;amp;amp;amp;amp;amp;amp;lt;-&amp;amp;amp;amp;amp;amp;amp;gt;葡萄牙语的方向,mRASP2仅仅依靠这两种语言的单语语料就取得了还不错的效果。表中的平均分数是除了荷兰语&amp;amp;amp;amp;amp;amp;amp;lt;-&amp;amp;amp;amp;amp;amp;amp;gt;葡萄牙语(Nl&amp;amp;amp;amp;amp;amp;amp;lt;-&amp;amp;amp;amp;amp;amp;amp;gt;Pt)之外的方向平均得到的。

上表展示了mRASP2在无监督方向上的优越翻译性能。实验结果表明:依靠多语言性能,mRASP2能同时实现多个方向的无监督翻译。

零资源翻译方向

在如今的机器翻译领域存在着一类零资源翻译的问题:当我们只有英语到其他语言之间的平行语料时,我们能否支持非英语语对之间的直接翻译?mRASP2通过引入对比学习,巧妙地做到了这一点。
上表展示了mRASP2在零资源方向上的效果,表中展示的是de-tokenized BLEU(https://github.com/alvations/sacremoses)。表中的Pivot是桥接模型,其结果是我们由m-Transformer经过“X语言-&amp;amp;amp;amp;amp;amp;amp;gt;英语-&amp;amp;amp;amp;amp;amp;amp;gt;Y语言”的两步翻译得到的。注意荷兰语(Nl)在平行语料中没有出现过。
实验结果表明:mRASP2在零资源场景下表现卓越,甚至能够比肩很强的桥接模型。


06

对比学习起了什么作用
上表总结了mRASP2的几个关键技术点对最终效果的影响。其中mRASP只使用了平行句对和对齐增强;mRASP2 w/o MC24只使用了平行句对、对齐增强、对比损失;mRASP2 w/o AA只使用了平行句对、对比损失。
作者将mRASP2的关键技术点分为3个,分别是: (i) 对比损失函数 (ii) 词对齐数据增强方法 (iii) 单语语料,并且通过对比实验研究了这三个技术点的主要效果。主要结论如下:
1. 对比学习并不会降低有监督场景的性能,并且对零资源场景下的翻译性能有重大提升:对比1和3或者2和4,加入对比损失函数后,有监督方向的效果基本持平,而零资源方向提升了接近10个BLEU
2. 单语语料的引入对所有场景的翻译性能都有明显提升:对比4和5,加入单语语料之后,mRASP2可以很好地支持无监督方向。
由此我们可以看出,对比学习的作用主要体现在:在不影响其他翻译方向的前提下,提升了零资源方向的翻译效果。

可视化: 对比学习能更好地拉近多语言表示对齐语义空间

作者从ted测试集过滤构建了15个语种的平行数据集Ted-M,共2284组,然后获得这些同义句在不同语言的语义空间中的向量后,用T-SNE降维,并且画出了其分布,如下图所示。可以直观地看出,mRASP2有效地对齐了不同语言的语义空间。

上图是T-SNE降维后的二维核密度分析的分布图。蓝色的线是英语,橙色的线是日语,绿色的线是德语。这张图表明了句意的表示被mRASP2拉近了。

散点图如下图所示,每一个点都代表一个句子。图中画出了4组同义句的点(id分别为1, 100, 1200, 2000),可以看出三种语言的同义句几乎是完全重合在一起的。
上图是多语言平行语料Ted-M的二维散点图。我们可以看出同义句在不同语言(英、日、德)中的表示基本重叠在一起。图例中的数字代表的是同义句的id。
其中id=1, 100的同义句组如下:


07

总结
本文主要介绍了mRASP2,该工作提出引入对比学习来增强多语言翻译模型。该方法简洁优雅,在广泛的场景下取得明显性能提升,可以大大缓解低资源语种训练数据不足的问题。该算法即将在字节跳动的火山翻译系统中落地。若有问题,欢迎与我交流~


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存